package czh.cocoa.sample;

import czh.cocoa.foundation.NSIndexPath;
import czh.cocoa.foundation.NSObject;
import czh.cocoa.foundation.NSString;
import czh.cocoa.graphics.CGRect;
import czh.cocoa.ui.UIColor;
import czh.cocoa.ui.UIImage;
import czh.cocoa.ui.UIScreen;
import czh.cocoa.ui.UITextAlignment;
import czh.cocoa.ui.UIView;
import czh.cocoa.ui.impl.UIButton;
import czh.cocoa.ui.impl.UIImageView;
import czh.cocoa.ui.impl.UILabel;
import czh.cocoa.ui.impl.UIScrollView;
import czh.cocoa.ui.impl.UITableView;
import czh.cocoa.ui.impl.UITableViewCell;
import czh.cocoa.ui.impl.UITableViewDataSource;
import czh.cocoa.ui.impl.UITableViewDelegate;

import static czh.cocoa.ui.impl.UIControl.UIControlStateHighlighted;
import static czh.cocoa.ui.impl.UIControl.UIControlStateNormal;
import static czh.cocoa.ui.impl.UITableView.*;
import static czh.cocoa.ui.impl.UITableViewCell.*;

public class MyTableViewController extends NSObject implements UITableViewDataSource, UITableViewDelegate {

	private UITableView mTableView;
	
	public MyTableViewController() {
		CGRect frame = UIScreen.mainScreen().applicationFrame();
		mTableView = new UITableView(frame, UITableViewStyleGrouped);
		mTableView.setDataSource(this);
		mTableView.setDelegate(this);
		
//		UIView header = new UIView(CGRectMake(0, 0, 0, 50));
//		header.setBackgroundColor(UIColor.brownColor());
//		mTableView.setTableHeaderView(header); 
//		
//		UIView footer = new UIView(CGRectMake(0, 0, 0, 50));
//		footer.setBackgroundColor(UIColor.brownColor());
//		mTableView.setTableFooterView(footer); 
	}
	
	public UIView view() {
		return mTableView;
	}
	
	public void reloadData() {
		mTableView.reloadData();
	}
	
	public void reloadDataAtIndexPath(NSIndexPath indexPath) {
		mTableView.reloadRowAtIndexPath(indexPath); 
	}
	
	@Override
	public float tableViewHeightForRowAtIndexPath(UITableView tableView,
			NSIndexPath indexPath) {
		return 100;
	}

	@Override
	public int numberOfSectionsInTableView(UITableView tableView) {
		return 4;
	}

	@Override
	public int tableViewNumberOfRowsInSection(UITableView tableView, int section) {
		return section + 1;
	}

	@Override
	public UITableViewCell tableViewCellForRowAtIndexPath(UITableView tableView, NSIndexPath indexPath) {
		
		//NSLog("cell for row at index path: " + indexPath.row() + "  " + indexPath.section()); 
		
		UITableViewCell cell = tableView.dequeueReusableCellWithIdentifier(null);
		if (cell != null) {
			//NSLog("dequeue cell: " + cell.getClass());
		} else {
			cell = new UITableViewCell(UITableViewCellStyleSubtitle, null);
//			UIImageView accessory_view = new UIImageView(UIImage.imageNamed(NSTR("ic_launcher")));  
//			cell.setAccessoryView(accessory_view);
			cell.imageView().setImage(UIImage.imageNamed(NSTR("ic_launcher"))); 
			
			cell.setAccessoryType(UITableViewCellAccessoryDetailDisclosureButton);
			
			cell.setSelectionStyle(UITableViewCellSelectionStyleBlue); 
			
			UIButton btn = new UIButton(CGRectMake(0,0,150,74));
			btn.setTitleColorForState(UIColor.whiteColor(), UIControlStateNormal);
			btn.setTitleColorForState(UIColor.redColor(), UIControlStateHighlighted);
			btn.setBackgroundImageForState(UIImage.imageNamed(NSTR("btn_normal.png")), UIControlStateNormal);
			btn.setBackgroundImageForState(UIImage.imageNamed(NSTR("btn_down.png")), UIControlStateHighlighted);
			
			btn.setTag(100);
			//cell.contentView().addSubview(btn); 
		}
		
		int row = indexPath.row();
		
//		NSString title = NSTR("Hello World " + (row + 1));
//		UIButton button = (UIButton)cell.contentView().viewWithTag(100); 
//		button.setTitleForState(title, UIControlStateNormal); 
		
		cell.textLabel().setText(NSTR("Hello World " + (row + 1)));
		cell.detailTextLabel().setText(NSTR("click it"));

		return cell;
	}
	
	@Override
	public float tableViewHeightForHeaderInSection(UITableView tableView, int section) {
		return 0;
	}

	@Override
	public NSString tableViewTitleForHeaderInSection(UITableView tableView, int section) {
		return NSTR("that's section " + section); 
	}

	@Override
	public UIView tableViewViewForHeaderInSection(UITableView tableView, int section) {
		return null;
	}
	
//scroll view	
	
	@Override
	public UIView viewForZoomingInScrollView(UIScrollView scrollView) {
		return null;
	}

	@Override
	public void scrollViewDidScroll(UIScrollView scrollView) {
		
	}

	@Override
	public void scrollViewDidEndDraggingWillDecelerate(UIScrollView scrollView,
			boolean decelerate) {
		
	}

	@Override
	public void scrollViewWillBeginDecelerating(UIScrollView scrollView) {
		
	}

	@Override
	public void scrollViewDidEndDecelerating(UIScrollView scrollView) {
		
	}

	@Override
	public void tableViewDidSelectRowAtIndexPath(UITableView tableView, NSIndexPath indexPath) {
		tableView.deselectRowAtIndexPathAnimated(indexPath, false);
	}

}
